Skip to content

DMA 模块总览 - Overview ​

本分类做什么 ​

通过 DMA 设备(含 VMware 等)对 目标物理内存空间 进行 搜索、散列读、标量读写,接口名均以 Dma 前缀区分于 内存 的用户态逻辑读写。需 硬件/驱动/高级版 支持,误用可致系统不稳定。


一、设备管理 ​

接口差异
DmaAddDevice添加 VMware 类设备(参数见详情页)。
DmaAddDeviceEx扩展 添加(自定义设备类型/路径等)。
DmaRemoveDevice移除设备句柄。

二、进程与模块 ​

接口用途
DmaGetPidFromName、DmaGetPidList解析 进程(名称→PID、枚举)。
DmaGetProcessInfo进程基本信息。
DmaGetModuleBase、DmaGetModuleSize、DmaGetProcAddress模块基址/大小/导出,与内存模块语义类似但走 DMA 路径。

三、搜索:DmaFind* 与 Ex ​

类型接口与内存模块对应
二进制DmaFindData / DmaFindDataEx类似 FindData(Ex)
整数DmaFindInt / DmaFindIntEx类似 FindInt(Ex)
浮点DmaFindFloat / DmaFindFloatEx…
双精度DmaFindDouble / DmaFindDoubleEx…
字符串DmaFindString / DmaFindStringEx…

差异:Ex 通常多 范围、对齐、多结果 等参数;底层通过 DMA 读 实现。


四、散列读(Scatter) ​

步骤接口
创建DmaScatterCreate
准备地址DmaScatterPrepare
执行DmaScatterExecute
取结果DmaScatterRead
清理DmaScatterClear
关闭DmaScatterClose

与单次 DmaRead* 差异:批量不连续地址 时减少往返,CPU/带宽 更优;需按顺序调用。


五、读写:DmaRead* / DmaWrite* ​

命名规律含义
DmaReadData / DmaReadDataAddr读一块数据;Addr 变体显式物理/设备地址(以详情页为准)。
DmaReadDataToBin / DmaReadDataAddrToBin读到 本地缓冲,需配对释放(见内存模块 FreeMemoryPtr 等说明)。
DmaReadInt / DmaReadIntAddr标量;Addr 同理。
DmaWrite*写入对称命名。

六、与内存模块选型 ​

场景优先
有目标进程句柄、用户态可读内存
需 DMA 硬件、虚拟机物理内存DMA

七、注意 ​

  • 地址是 物理 还是 转换后 以 详情页与设备类型 为准。
  • 写入 风险极高,先在副本环境验证。